Các tính chất mật mã học Hàm băm mật mã

Không có một định nghĩa hình thức bao trùm tất cả các tính chất mong muốn của một hàm băm mật mã học. Các tính chất dưới đây được coi là yêu cầu tiên quyết:

  • Preimage resistant (Về một tính chất có liên quan nhưng hơi khác, xem bài hàm một chiều): cho trước h việc tìm m sao cho h = hash(m) là rất khó.
  • Second preimage resistant: cho thông điệp m1, việc tìm một thông điệp m2 (khác m1) sao cho hash(m1) = hash(m2) là rất khó.
  • Collision-resistant: việc tìm 2 thông điệp khác nhau m1 và m2 sao cho hash(m1) = hash(m2) là rất khó. Do khả năng tấn công ngày sinh nhật (birthday attack), điều đó có nghĩa là kết quả của hàm băm phải dài ít nhất là gấp đôi so với yêu cầu của preimage-resistance.

Một hàm băm thỏa mãn các tiêu chí trên có thể vẫn có các tính chất không mong muốn. Ví dụ, các hàm băm phổ biến nhất dễ bị tổn thương bởi các tấn công length-extension: Cho trước h(m) và len(m) nhưng không cho trước m, bằng cách chọn m' thích hợp, một kẻ tấn công có thể tính h (m || m'), trong đó || ký hiệu phép nối xâu (concatenation). Tính chất này có thể được dùng để phá các phương pháp xác thực đơn giản dựa vào các hàm băm. Việc xây dựng HMAC đã tránh được các vấn đề này.

Nhiều người có một khái niệm sai rằng "tính chất một chiều" của một hàm băm mật mã hóa có nghĩa rằng việc xử lý trạng thái băm là không thể lần ngược được, và rằng nó mâu thuẫn với các nguyên tắc dùng để xây dựng các mã hóa khối (block cipher). Thực ra, "tính chất không thể đảo ngược" đó có nghĩa rằng có các xung đột địa phương tạo điều kiện cho các tấn công. Để có tính chất an toàn mật mã học, hàm băm phải là một quá trình xử lý hoán vị trạng thái của nó theo kiểu song ánh (bijective)Tính chất không thể đảo ngược đó thực ra có nghĩa rằng: không thể tìm khóa dùng cho việc mã hóa một khối A thành một khối B bằng một phương pháp nào nhanh hơn là vét cạn.

Tài liệu tham khảo

WikiPedia: Hàm băm mật mã http://planeta.terra.com.br/informatica/paulobarre... http://www.adastral.ucl.ac.uk/~helger/crypto/ http://www.cs.rit.edu/~ark/lectures/onewayhash/one... http://www.unixwiz.net/techtips/iguide-crypto-hash... http://schneier.com/essay-074.html http://www.cryptography.com/cnews/hash.html http://www.cits.rub.de/MD5Collisions/ http://www.rsasecurity.com/rsalabs/node.asp?id=217... http://phpsec.org/articles/2005/password-hashing.h... https://web.archive.org/web/20060808184652/http://...